package com.bird.thread.base.synchronize;

/**
 * @author sijunqiang
 * @data 2021/6/29 22:29
 * @description: 验证：不使用synchronized关键字 多线程访问的时候造成的脏数据的问题。
 * 原因：
 */
public class DisappearRequest implements Runnable {
    static DisappearRequest dis = new DisappearRequest();
    static int i = 0;

    public static void main(String[] args) throws InterruptedException {

        Thread thread1 = new Thread(dis);
        Thread thread2 = new Thread(dis);

        thread1.start();
        thread2.start();

        thread1.join();
        thread2.join();

        System.out.println(i);
        /*导致脏数据的原因是：
         * count++，实际上包含三个动作。
         * 1：读取count.
         * 2:将count+1.
         * 3:将count的值写入内存中.
         */
    }


    @Override
    public void run() {
        for (int i1 = 0; i1 < 50000; i1++) {
            i++;
        }
    }
}
